﻿namespace MicroCloud.Message.Dtos
{
    /// <summary>
    /// 输入DTO：消息
    /// </summary>
    [MapTo(typeof(MessageEntity))]
    public class MessageInputDto : IInputDto<long>
    {
        #region "属性"
        #region "获取或设置 编号"
        /// <summary>
        /// 获取或设置 编号
        /// </summary>
        [DisplayName("编号")]
        public long Id { get; set; }
        #endregion

        #region "获取或设置 基本对象类型"
        /// <summary>
        /// 获取或设置 基本对象类型
        /// </summary>
        [DisplayName("基本对象")]
        public string BaseType { get; set; }
        #endregion
        #region "获取或设置 基本对象编号"
        /// <summary>
        /// 获取或设置 基本对象编号
        /// </summary>
        [DisplayName("基本对象编号")]
        public string BaseId { get; set; }
        #endregion
        #region "获取或设置 方法名"
        /// <summary>
        /// 获取或设置 方法名
        /// </summary>
        [DisplayName("方法名")]
        public string Method { get; set; }
        #endregion
        #region "获取或设置 消息图标"
        /// <summary>
        /// 获取或设置 消息图标
        /// </summary>
        [DisplayName("消息图标")]
        public string Icon { get; set; }
        #endregion
        #region "获取或设置 消息类型"
        /// <summary>
        /// 获取或设置 消息类型
        /// </summary>
        [DisplayName("消息类型")]
        public MessageType MessageType { get; set; }
        #endregion
        #region "获取或设置 消息级别"
        /// <summary>
        /// 获取或设置 消息级别
        /// </summary>
        [DisplayName("消息级别")]
        public MessageLevel MessageLevel { get; set; }
        #endregion
        #region "获取或设置 标题"
        /// <summary>
        /// 获取或设置 标题
        /// </summary>
        [DisplayName("标题")]
        public string Title { get; set; }
        #endregion
        #region "获取或设置 内容"
        /// <summary>
        /// 获取或设置 内容
        /// </summary>
        [DisplayName("内容")]
        public string Content { get; set; }
        #endregion
        #region "获取或设置 数据体"
        /// <summary>
        /// 获取或设置 数据体
        /// </summary>
        [DisplayName("数据体")]
        public dynamic Payload { get; set; }
        #endregion

        #region "获取或设置 发送时间"
        /// <summary>
        /// 获取或设置 发送时间
        /// </summary>
        [DisplayName("发送时间")]
        public DateTime SendTime { get; set; }
        #endregion

        #region "获取或设置 存储天数(0-365,0表示永久存储)"
        /// <summary>
        /// 获取或设置 存储天数(0-365,0表示永久存储)
        /// </summary>
        [DisplayName("存储天数(0-365,0表示永久存储)")]
        public int StorageDays { get; set; }
        #endregion

        #region "获取或设置 发送方式集合"
        /// <summary>
        /// 获取或设置 发送方式集合
        /// </summary>
        [DisplayName("发送方式")]
        public MessageSendWay[] SendWays { get; set; }
        #endregion
        #region "获取或设置 发送至用户集合"
        /// <summary>
        /// 获取或设置 发送至用户集合
        /// </summary>
        [DisplayName("发送至用户")]
        public string[] ToUsers { get; set; }
        #endregion
        #region "获取或设置 发送至组织机构集合"
        /// <summary>
        /// 获取或设置 发送至组织机构集合
        /// </summary>
        [DisplayName("发送至组织机构")]
        public string[] ToOrganizations { get; set; }
        #endregion
        #region "获取或设置 发送至角色集合"
        /// <summary>
        /// 获取或设置 发送至角色集合
        /// </summary>
        [DisplayName("发送至角色")]
        public string[] ToRoles { get; set; }
        #endregion

        #endregion

    }

}
